//
//  NSError+DY.m
//  TestGizWits
//
//  Created by JM on 15/11/17.
//  Copyright © 2015年 JM. All rights reserved.
//

#import "NSError+DY.h"

@implementation NSError (DY)

+ (NSDictionary *)errorDic;{
    NSDictionary *dic = @{@(-1):@"一般错误",
                          @(-2):@"写入数据的操作未执行",
                          @(-3):@"",
                          @(-4):@"读取或写入数据时，数据长度不在 0-65535 的范围",
                          @(-5):@"错误的连接 ID",
                          //                          @(-6):@"",
                          @(-7):@"连接已关闭",
                          @(-8):@"数据包的校验和不正确",
                          @(-9):@"登录验证失败",
                          @(-10):@"控制设备时，发现该设备没有登录过",
                          @(-11):@"设备未连接",
                          @(-12):@"执行 MQTT 相关操作时出错",
                          @(-13):@"发现小循环设备或者配置 AirLink 时，收到的数据包不能正确解析相关的内容",
                          @(-14):@"调用 setsockopt() 失败",
                          @(-15):@"线程创建失败",
                          //                          @(-16):@"",
                          @(-17):@"建立太多的连接，导致连接池满了。最大允许建立 255 个 TCP 连接",
                          @(-18):@"大循环操作时，使用了空的 Client ID",
                          @(-19):@"连接出现错误",
                          @(-20):@"传入了错误的参数",
                          @(-21):@"连接超时。默认超时 1 分钟",
                          @(-22):@"数据包版本号错误",
                          @(-23):@"不能分配内存",
                          @(-24):@"当前线程在使用中",
                          @(-25):@"HTTP 操作失败",
                          @(-26):@"获取 Passcode 失败",
                          @(-27):@"获取 DNS 失败",
                          @(-39):@"配置 on-boarding 时，手机连接的 SSID 与配置设备的 SSID 不一致",
                          @(-40):@"配置 on-boarding 超时",
                          @(-41):@"配置 on-boarding 时，发送失败",
                          @(-42):@"配置错误，执行 Soft-AP 方法但不在 Soft-AP 模式",
                          @(-43):@"接收到了不可识别的数据",
                          @(-44):@"不能连接，无法获取到网关",
                          @(-45):@"连接被拒绝",
                          @(-46):@"当前事件正在处理",
                          @(-47):@"不支持的api",};
    return dic;
}

- (NSString *)dy_description{
//    NSString *domain = @"errorPrompt";
//    if ([domain isEqualToString:self.domain]){
//         return [NSError errorDic][@(self.code)];
//    }
    return self.localizedDescription;
}

+ (instancetype)dy_errorWithErrCode:(NSInteger) aErrcode {
    NSString *domain = @"errorPrompt";
   
    
    NSString *desc = [NSError errorDic][@(aErrcode)];
    if (!desc) {
         desc = [NSString stringWithFormat:@"%ld",(long)aErrcode];
    }
    NSDictionary *userInfo = @{ NSLocalizedDescriptionKey : desc };
    
    NSError *newError = [NSError errorWithDomain:domain
                                            code:aErrcode
                                        userInfo:userInfo];
    return newError;
}

+ (instancetype)dy_errorWithErrCode:(NSInteger) aErrcode errMessage:(NSString *)aMessage {
    NSString *domain = @"com.dooya.DYLYJ.ErrorDomain";
    NSString *desc = aMessage;
    NSDictionary *userInfo = @{ NSLocalizedDescriptionKey : desc };
    
    NSError *newError = [NSError errorWithDomain:domain
                                            code:aErrcode
                                        userInfo:userInfo];
    return newError;
}
@end
